The present invention relates to the field of programmable devices, and the systems and methods for preventing configuration errors in the same. Programmable devices, such as FPGAs, typically includes thousands of programmable logic cells that use combinations of logic gates and/or look-up tables to perform a logic operation. Programmable devices also include a number of functional blocks having specialized logic devices adapted to specific logic operations, such as adders, multiply and accumulate circuits, phase-locked loops, and memory. The logic cells and functional blocks are interconnected with a configurable switching circuit. The configurable switching circuit selectively routes connections between the logic cells and functional blocks. By configuring the combination of logic cells, functional blocks, and the switching circuit, a programmable device can be adapted to perform virtually any type of information processing function.
The functions of a programmable device, such as an FPGA, are usually controlled by configuration data stored in a set of configuration RAM cells (CRAM). The configuration data in CRAM provides the logic signals used to configure the programmable device to implement its intended functions. Typically, the data in CRAM includes values of look-up tables defining the functions of logic cells; values of control signals for multiplexers and other switching devices used by the configurable switching circuit to route signals between inputs, outputs, logic cells, and functional blocks; and values specifying other aspects of the configuration of the programmable device, such as modes of operation of the programmable device and its assorted functional blocks and logic cells. A copy of the configuration data is typically stored in a non-volatile memory, such as flash memory or ROM, that is within the same chip package as the programmable device or on an external configuration device connected with the programmable memory device. This copy of the configuration data is loaded into the CRAM cells of the programmable device to configure the programmable device to implement the desired functionality.
As the physical dimensions of CRAM cells decrease due to advances in manufacturing processes, the CRAM cells become more susceptible to spontaneous “soft errors.” Soft errors may be induced by background radiation, such as alpha particles or cosmic rays, and result in CRAM cells spontaneously changing state from “0” to “1” or vice versa. As the function of the programmable device is determined by the data stored in CRAM cells, even a single change in a CRAM cell's state can change or disable the functions of the programmable device. Additionally, as programmable devices become more complicated and require additional CRAM cells to store their configuration data, the frequency of soft errors increases as well.
To mitigate the problems caused by soft errors, CRAM cells are often specially designed to resist soft errors. However, many of these special CRAM cell designs are difficult to efficiently scale down to smaller manufacturing processes. Additionally, programmable devices can include error detection and/or correction circuits adapted to detect and/or correct soft errors after they occur. Typically, upon detecting a soft error in the CRAM cells, the error detection circuitry initiates a reconfiguration operation that reloads configuration data from the non-volatile memory or external configuration device into the CRAM cells of the programmable device. Although error detection circuits allow for correction of soft errors that have occurred, they do not prevent a programmable device from malfunctioning between the time that the soft error occurs and its detection. Additionally, the normal operations of the programmable device are disabled during the reconfiguration operation. Thus, overall programmable device performance is degraded by the constant occurrence and correction of soft errors in CRAM cells.
It is therefore desirable for a system and method of encoding and storing configuration data in CRAM cells to greatly reduce the probability of soft errors. It is further desirable for this system and method to scale down in size efficiently as manufacturing processing improve. It is further desirable for this system and method to be simple to implement in programmable devices without requiring substantial modifications or overhead.